/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package giuliani_mapelli_marocco.enumerations;

/**
 *This enum represents the list of the kinds of forecast provided by the meteo service.
 * A code and the parth of the correspondent icon is associated to every kind of meteo.
 */
public enum WeatherType {  //TODO icon path still missing
    
    THUNDERSTORM_WITH_LIGHT_RAIN( 200, "Thunderstorm with light rain", ""),
    THUNDERSTORM_WITH_RAIN(201, "Thunderstorm with rain", ""),
    THUNDERSTORM_WITH_HEAVY_RAIN (202,"Thunderstorm with heavy rain", ""),
    LIGHT_THUNDERSTORM(210,"Light thunderstorm", ""),
    THUNDERSTORM(211,"Thunderstorm", ""),
    HEAVY_THUNDERSTORM(212,"Heavy thunderstorm", ""),
    RAGGED_THUNDERSTORM(221,"Ragged thunderstorm", ""),
    THUNDERSTORM_WITH_LIGHT_DRIZZLE(230, "Thunderstorm with light drizzle", ""),
    THUNDERSTORM_WITH_DRIZZLE  (231, "Thunderstorm with drizzle", ""),
    THUNDERSTORM_WITH_HEAVY_DRIZZLE  (232, "Thunderstorm with heavy drizzle", ""),
    LIGHT_INTENSITY_DRIZZLE(300, "Light intensity drizzle", ""),
    DRIZZLE(301, "Drizzle", ""),
    HEAVY_INTENSITY_DRIZZLE(302, "Heavy intensity drizzle", ""),
    LIGHT_INTENSITY_DRIZZLE_RAIN(310, "Light intensity drizzle rain", ""),
    DRIZZLE_RAIN(311, "Drizzle rain", ""),
    HEAVY_INTENSITY_DRIZZLE_RAIN(312, "Heavy intensity drizzle rain", ""),
    SHOWER_RAIN_AND_DRIZZLE(313, "Shower rain and drizzle", ""),
    HEAVY_SHOWER_RAIN_AND_DRIZZLE(314, "Heavy shower rain and drizzle", ""),
    SHOWER_DRIZZLE(321, "Shower drizzle", ""),
    LIGHT_RAIN(500, "Light rain", ""),
    MODERATE_RAIN(501, "Moderate rain", ""),
    HEAVY_INTENSITY_RAIN(502, "Heavy intensity rain", ""),
    VERY_HEAVY_RAIN(503, "Very heavy rain", ""),
    EXTREME_RAIN(504, "Extreme rain", ""),
    FREEZING_RAIN(511, "Freezin rain", ""),
    LIGHT_INTENSITY_SHOWER_RAIN(520, "Light intensity shower rain", ""),
    SHOWER_RAIN(521, "Shower rain", ""),
    HEAVY_INTENSITY_SHOWER_RAIN(522, "Heavy intensity rain", ""),
    RAGGED_SHOWER_RAIN(531, "Ragged shower rain", ""),
    LIGHT_SNOW(600, "Light snow", ""),
    SNOW(601, "Snow", ""),
    HEAVY_SNOW(602, "Heavy snow", ""),
    SLEET(611, "Sleet", ""),
    SHOWER_SLEET(612, "Shower sleet", ""),
    LIGHT_RAIN_AND_SNOW(615, "Light rain and snow", ""),
    RAIN_AND_SNOW(616, "Rain and snow", ""),
    LIGHT_SHOWER_SNOW(620, "Light shower snow", ""),
    SHOWER_SNOW(621, "Shower snow", ""),
    HEAVY_SHOWER_SNOW(622, "Heavy shower snow", ""),
    MIST(701, "Mist", ""),
    SMOKE(711, "Smoke", ""),
    HAZE(721, "Haze", ""),
    SAND_DUST_WHIRLS(731, "Sand dust whirls", ""),
    FOG(741, "Fog", ""),
    SAND(751, "Sand", ""),
    DUST(761, "Dust", ""),
    VOLCANIC_ASH(762, "Volcanic Ash", ""),
    SQUALLS(771, "Squalls", ""),
    TORNADO(781, "Tornado", ""),
    CLEAR_SKY(800, "Clear sky", ""),
    FEW_CLOUDS(801, "Few clouds", ""),
    SCATTERED_CLOUDS(802, "Scattered clouds", ""),
    BROKEN_CLOUDS(803, "Broken clouds", ""),
    OVERCAST_CLOUDS(804, "Overcast clouds", ""),
    TROPICAL_STORM(901, "Tropical storm", ""),
    HURRICANE(902, "Hurricane", ""),
    COLD(903, "Cold", ""),
    HOT(904, "Hot", ""),
    WINDY(905, "Windy", ""),
    HAIL(906, "Hail", ""),
    CALM(951, "Calm", ""),
    LIGHT_BREEZE(952, "Light breeze", ""),
    GENTLE_BREEZE(953, "Gentle breeze", ""),
    MODERATE_BREEZE(954, "Moderate breeze", ""),
    FRESH_BREEZE(955, "Fresh breeze", ""),
    STRONG_BREEZE(956, "Strong breeze", ""),
    HIGH_WIND_NEAR_GALE(957, "High wind near gale", ""),
    GALE(958, "Gale", ""),
    SEVERE_GALE(959, "Severe gale", ""),
    STORM(960, "Storm", ""),
    VIOLENT_STORM(961, "Violent storm", ""); 
    
   private final int code;
   private final String iconPath;
   private final String description;

   
    public String getDescription() {
        return description;
    }
   
    /**
     *getter oof the weather's code
     * @return the code of the kind of weather
     */
    public int getCode() {
       return code;
   }

    /**
     *getter of the string representing the icon's path of the kind of weather
     * @return the icon path
     */
    public String getIconPath() {
       return iconPath;
   }

   private WeatherType (int code, String description, String iconPath) {
       this.iconPath=iconPath;
       this.code=code;
       this.description=description;
   }
}
